<?php
/**
 * Zuweisung von Admin-Rechten
 * Zum definieren und loeschen existierender Administrativer Rechte
 * 
 * @author		Joachim Ruf
 * @copyright	Copyright (c) 2003-2013 Loresoft Software (http://www.loresoft.de)
 * @license		http://yapary.loresoft.de/lizenzbedingungen     New BSD License
 * 
 * */


Class Yapary_Admin_AdminRights
{
	private $oSql;
	
	
	function __construct (Yapary_Db_Sql_Connector $oSql)
	{
		$this->oSql = $oSql;	
	}
	
	
	/**
	* Definiert ein Recht mit dem zugehoerigen Rechtewert
	* Der Rechtewert wird spaeter fuer die Ueberpruefung benoetigt
	* @param string $name : Name/Bezeichnung des Rechts
	* @param string $value : Zugehoeriger Wert
	* @return bool
	*/
	public function add ( $name, $value )
	{
		if (!$this->exists($name)) {
			$oDbResult = $this->oSql->request("INSERT INTO admin_right (Name, Value) VALUES ('$name', '$value') ");
			return true;
		}
		
		return false;
	}
		
	
	/**
	* Ueberarbeitet ein definiertes Recht
	* @param string $oldName : Aktueller Name/Bezeichnung des Rechts
	* @param string $newName : neu zu vergebender Name/Bezeichnung
	* @param string $newValue : neu zu vergebender Wert
	* @return bool
	*/
	public function update ( $name, $newValue )
	{
		if ($this->exists($name)) {
			$oDbResult = $this->oSql->request("UPDATE admin_right SET Value='$newValue' WHERE Name='$name' ");
			return true;
		}
		
		return false;
	}
	

	/**
	* Loescht ein bereits definiertes Recht
	* @param string $name : Name/Bezeichnung des Rechts
	* @return bool
	*/
	public function delete ( $name )
	{
		if ($this->exists($name)) {
			$oDbResult = $this->oSql->request("DELETE FROM admin_right WHERE Name='$name' ");
			return true;
		}
		
		return false;		
	}
	

	/**
	* Liefert eine Liste aller definierten Rechte
	* @return array : array(Name1=>Value1, Name2=>Value2, ...)
	*/
	public function &getList ( )
	{
		$arr = array();
		
		$oDbResult = $this->oSql->request("SELECT Name, Value FROM admin_right ORDER BY Name ");
		if ($oDbResult->getCount() >= 1) {
			while ($row = $this->oSql->nextData()) {
				$arr[$row->Name] = $row->Value;
			}
		}
					
		return $arr;
	}
	

	/**
	* Liefert den zu einem definierten Recht zugehoerigen Wert
	* @return string|NULL
	*/
	public function getValue ( $name )
	{
		$oDbResult = $this->oSql->request("SELECT Value FROM admin_right WHERE Name='$name'");
		if ($oDbResult->getCount() == 1) {
			$row = $oDbResult->getNext();
			return $row->Value;
		}
			
		return NULL;
	}

		
	/**
	* Prueft ob ein Recht existiert
	* @return bool
	*/
	public function exists ( $name )
	{
		$oDbResult = $this->oSql->request("SELECT Name FROM admin_right WHERE Name='$name' ");
		if ($oDbResult->getCount() == 1) {
			return true;
		}
		
		return false;		
	}


}


?>